package com.louis.testvalidation;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

/**
 * @author XRY
 * @date 2023年06月29日11:43
 */
public class PersonValidator implements Validator {
    /**
     * 此方法用来表示此校验用在哪个类型上
     * @param clazz
     * @return
     */
    @Override
    public boolean supports(Class<?> clazz) {
        return Person.class.equals(clazz);
    }

    /**
     * 此方法是设置校验逻辑的地点，其中ValidatorUtils，是Spring封装的工具类。帮助快速实现校验
     * @param target
     * @param errors
     */

    //校验规则
    @Override
    public void validate(Object target, Errors errors) {
        //name不能为空
        ValidationUtils.rejectIfEmpty(errors, "name", "name Empty", "name is null");
        //age不能小于0，不能大于200
        Person p = (Person)target;
        if (p.getAge() <= 0){
            errors.rejectValue("age", "age.value.error", "age<0");
        } else if (p.getAge() >= 200) {
            errors.rejectValue("age", "age.value.error.max", "age>200");
        }
    }
}
